package com.zhangxu.microservice.system.web.convert;

import com.zhangxu.microservice.system.biz.dto.AssignRoleResourceDTO;
import com.zhangxu.microservice.system.biz.dto.RolePermissionDTO;
import com.zhangxu.microservice.system.biz.dto.RoleResourceDTO;
import com.zhangxu.microservice.system.web.request.AssignRoleResourceReq;
import com.zhangxu.microservice.system.web.response.RolePermissionResp;
import com.zhangxu.microservice.system.web.response.RoleResourceResp;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

import java.util.List;

/**
 * 角色资源权限Web层转换器
 */
@Mapper(componentModel = "spring")
public interface RoleResourceWebConverter {

    /**
     * 转换分配角色资源权限请求为DTO
     *
     * @param assignRoleResourceReq 分配角色资源权限请求
     * @return 分配角色资源权限DTO
     */
    AssignRoleResourceDTO toAssignRoleResourceDTO(AssignRoleResourceReq assignRoleResourceReq);

    /**
     * 转换角色资源权限DTO为响应对象
     *
     * @param roleResourceDTO 角色资源权限DTO
     * @return 角色资源权限响应
     */
    @Mapping(target = "role", ignore = true)
    @Mapping(target = "resource", ignore = true)
    RoleResourceResp toRoleResourceResp(RoleResourceDTO roleResourceDTO);

    /**
     * 批量转换角色资源权限DTO为响应对象
     *
     * @param roleResourceDTOList 角色资源权限DTO列表
     * @return 角色资源权限响应列表
     */
    List<RoleResourceResp> toRoleResourceRespList(List<RoleResourceDTO> roleResourceDTOList);

    /**
     * 转换角色权限DTO为响应对象
     *
     * @param rolePermissionDTO 角色权限DTO
     * @return 角色权限响应
     */
    RolePermissionResp toRolePermissionResp(RolePermissionDTO rolePermissionDTO);
}